package main

import (
	"fmt"

	"github.com/pion/stun"
)

func main() {
	//uri := "stun:stun.l.google.com:19302"
	uri := "stun:websocket.beesoft.ink:5349" // stun|turn |3478|5349 域名|IP # 都是发送 stun 默认使用 3478 域名还是要换成 IP
	//uri := "stun:111.229.207.234:5349"

	u, err := stun.ParseURI(uri)
	if err != nil {
		panic(err)
	}

	c, err := stun.DialURI(u, &stun.DialConfig{})
	if err != nil {
		panic(err)
	}

	message := stun.MustBuild(stun.TransactionID, stun.BindingRequest)
	if err := c.Do(message, func(res stun.Event) {
		if res.Error != nil {
			panic(res.Error)
		}

		var xorAddr stun.XORMappedAddress
		if err := xorAddr.GetFrom(res.Message); err != nil {
			panic(err)
		}

		// fmt.Println("your IP is", xorAddr.IP)
		fmt.Printf("%+v", xorAddr)
	}); err != nil {
		panic(err)
	}

	if err := c.Close(); err != nil {
		panic(err)
	}
}
